﻿using System;
using System.Collections.Generic;
using System.Web.Services;
using System.Web.Services.Protocols;
using ClickLand.CorporacionPlaza.Comunes.EntidadesDto;

namespace ClickLand.CorporacionPlaza.Servicio.Contratos
{
    /// <summary> Contrato que define las operaciones del servicio web de corporacion plaza </summary>
    [WebService(Namespace = "http://CorporacionPlaza.Servicios.Contratos", Name = "ICorporacionPlazaWS")]
    [WebServiceBindingAttribute(ConformsTo = WsiProfiles.BasicProfile1_1, EmitConformanceClaims = true, Name = "ICorporacionPlazaWS")]
    public interface ICorporacionPlazaWS
    {
        /// <summary> Metodo de prueba para seguir de ejemplo como se realizan la declaracion de los mismos </summary>
        /// <returns>true si funciona false sino</returns>
        [WebMethodAttribute(MessageName = "ServicioPrueba")]
        [SoapDocumentMethod(Action = "http://CorporacionPlaza.Servicios.Contratos/ServicioPrueba",
        ParameterStyle = SoapParameterStyle.Wrapped)]
        bool ServicioPrueba();


        /// <summary> Metodo que almacena los datos de un cliente </summary>
        /// <param name="cliente">datos del cliente a almacenar</param>
        /// <returns>true si la transaccion fue exitosa false sino</returns>
        [WebMethodAttribute(MessageName = "AgregarEditarCliente")]
        [SoapDocumentMethod(Action = "http://CorporacionPlaza.Servicios.Contratos/AgregarEditarCliente",
        ParameterStyle = SoapParameterStyle.Wrapped)]
        bool AgregarEditarCliente(ClienteDto cliente);


        /// <summary> Metodo que almacena los datos de un establecimiento </summary>
        /// <param name="establecimiento">datos del establecimiento a almacenar</param>
        /// <returns>true si la transaccion fue exitosa false sino</returns>
        [WebMethodAttribute(MessageName = "AgregarEditarEstablecimiento")]
        [SoapDocumentMethod(Action = "http://CorporacionPlaza.Servicios.Contratos/AgregarEditarEstablecimiento",
        ParameterStyle = SoapParameterStyle.Wrapped)]
        bool AgregarEditarEstablecimiento(EstablecimientoDto establecimiento);


        /// <summary> Metodo que consulta los clientes dados los parametros indicados </summary>
        /// <param name="parametros">datos para la consulta</param>
        /// <returns>lista de cliente</returns>
        [WebMethodAttribute(MessageName = "ConsultarCliente")]
        [SoapDocumentMethod(Action = "http://CorporacionPlaza.Servicios.Contratos/ConsultarCliente",
        ParameterStyle = SoapParameterStyle.Wrapped)]
        List<ClienteDto> ConsultarCliente(ClienteDto parametros);


        /// <summary> Metodo que con almacena los datos de un contrato nuevo </summary>
        /// <param name="contrato">datos del contrato a almacenar</param>
        /// <returns>true si realizo la insercion false sino</returns>
        [WebMethodAttribute(MessageName = "AgregarContrato")]
        [SoapDocumentMethod(Action = "http://CorporacionPlaza.Servicios.Contratos/AgregarContrato",
        ParameterStyle = SoapParameterStyle.Wrapped)]
        bool AgregarContrato(ContratoDto contrato);


        /// <summary> Metodo que Consulta los establecimientos </summary>
        /// <param name="establecimiento">Parametros para la busqueda</param>
        /// <returns>Lista de todos los establecimientos</returns>
        [WebMethodAttribute(MessageName = "ConsultarEstablecimientos")]
        [SoapDocumentMethod(Action = "http://CorporacionPlaza.Servicios.Contratos/ConsultarTodosEstablecimientos",
        ParameterStyle = SoapParameterStyle.Wrapped)]
        List<EstablecimientoDto> ConsultarTodosEstablecimientos(EstablecimientoDto establecimiento);


        /// <summary> Metodo que Consulta los contratos dado los parametros indicados </summary>
        /// <param name="parametros">Parametros para la busqueda</param>
        /// <returns>Lista de todos los establecimientos</returns>
        [WebMethodAttribute(MessageName = "ConsultarContrato")]
        [SoapDocumentMethod(Action = "http://CorporacionPlaza.Servicios.Contratos/ConsultarContrato",
        ParameterStyle = SoapParameterStyle.Wrapped)]
        List<ContratoDto> ConsultarContrato(ContratoDto parametros);


        /// <summary> Metodo que Consulta los contratos dado los parametros indicados </summary>
        /// <param name="id">Parametros para la busqueda</param>
        /// <returns>Lista de todos los establecimientos</returns>
        [WebMethodAttribute(MessageName = "ConsultarContratoId")]
        [SoapDocumentMethod(Action = "http://CorporacionPlaza.Servicios.Contratos/ConsultarContratoId",
        ParameterStyle = SoapParameterStyle.Wrapped)]
        ContratoDto ConsultarContratoId(long id);


        /// <summary> Metodo que consulta todos los establecimientos libres dentro de un limite de fecha </summary>
        /// <param name="fechaInicio">fecha de inicio de la busqueda</param>
        /// <returns>Lista de establecimientos que concuerdan con la fecha</returns>
        [WebMethodAttribute(MessageName = "ConsultarEstablecimientoLibres")]
        [SoapDocumentMethod(Action = "http://CorporacionPlaza.Servicios.Contratos/ConsultarEstablecimientoLibres",
        ParameterStyle = SoapParameterStyle.Wrapped)]
        List<EstablecimientoDto> ConsultarEstablecimientoLibres(DateTime fechaInicio, DateTime fechaFin);


        /// <summary> Metodo que Agrega la Venta de un contrato </summary>
        /// <param name="venta">Datos Para la insercion</param>
        /// <returns>true si realizo la insercion</returns>
        [WebMethodAttribute(MessageName = "AgregarVenta")]
        [SoapDocumentMethod(Action = "http://CorporacionPlaza.Servicios.Contratos/AgregarVenta",
        ParameterStyle = SoapParameterStyle.Wrapped)]
        bool AgregarVenta(VentaDto venta);


        /// <summary> Metodo que Consulta la lista de Venta de un contrato </summary>
        /// <param name="contrato">Datos Para la consulta</param>
        /// <param name="fechaInicio"> fecha inicio de la busqueda</param>
        /// <param name="fechaFin"> fecha fin de la busqueda</param>
        /// <returns>Lista de Ventas del contrato</returns>
        [WebMethodAttribute(MessageName = "ConsultarVentasContrato")]
        [SoapDocumentMethod(Action = "http://CorporacionPlaza.Servicios.Contratos/ConsultarVentasContrato",
        ParameterStyle = SoapParameterStyle.Wrapped)]
        List<VentaDto> ConsultarVentasContrato(ContratoDto contrato, DateTime fechaInicio, DateTime fechaFin);


        /// <summary> Metood que consulta la lista de poliza segun los parametros indicados </summary>
        /// <param name="obj">Parametros para la busqueda</param>
        /// <returns>Lista de Poliza</returns>
        [WebMethodAttribute(MessageName = "ConsultarListaPoliza")]
        [SoapDocumentMethod(Action = "http://CorporacionPlaza.Servicios.Contratos/ConsultarListaPoliza",
        ParameterStyle = SoapParameterStyle.Wrapped)]
        List<PolizaDto> ConsultarListaPoliza(ContratoDto obj);


        /// <summary> Metodo que Agrega o edita la lista de proyeccion de un contrato </summary>
        /// <param name="listaAgregar">Lista a agregar</param>
        /// <param name="listaEliminar">Lista A eliminar</param>
        /// <returns>true si realizo la operacion false sino</returns>
        [WebMethodAttribute(MessageName = "AgregarEditarProyeccion")]
        [SoapDocumentMethod(Action = "http://CorporacionPlaza.Servicios.Contratos/AgregarEditarProyeccion",
        ParameterStyle = SoapParameterStyle.Wrapped)]
        bool AgregarEditarProyeccion(List<ProyeccionDto> listaAgregar, List<ProyeccionDto> listaEliminar);


        /// <summary> Metood que consulta la lista de proyeccion de un contrato </summary>
        /// <param name="obj">Parametros para la busqueda</param>
        /// <returns>Lista de Poliza</returns>
        [WebMethodAttribute(MessageName = "ConsultarProyeccion")]
        [SoapDocumentMethod(Action = "http://CorporacionPlaza.Servicios.Contratos/ConsultarProyeccion",
        ParameterStyle = SoapParameterStyle.Wrapped)]
        List<ProyeccionDto> ConsultarProyeccion(ContratoDto obj);


        /// <summary> Metodo que consulta los canon por contrato y por fecha </summary>
        /// <param name="contrato">Datos del contrato a consultar</param>
        /// <param name="fecha">fecha inicio de la consulta</param>
        /// <returns>Lista de canon</returns>
        [WebMethodAttribute(MessageName = "ConsultarCanon")]
        [SoapDocumentMethod(Action = "http://CorporacionPlaza.Servicios.Contratos/ConsultarCanon",
        ParameterStyle = SoapParameterStyle.Wrapped)]
        List<ContratoPensionDto> ConsultarCanon(ContratoDto contrato, DateTime fecha);

    }
}
